//定制请求的实例

//导入axios  npm install axios
import axios from 'axios';
import { ElMessage } from 'element-plus'

//定义一个变量,记录公共的前缀  ,  baseURL
// const baseURL = 'http://localhost:8002';
const baseURL = '/api';
const instance = axios.create({baseURL})

import { useTokenStore } from '@/stores/token.js';
//添加请求拦截器
instance.interceptors.request.use(
    (config)=>{
        //请求前的回调
        //添加token
        const tokenStore = useTokenStore();
        //判断有没有token
        if(tokenStore.token){
            config.headers.Authorization = tokenStore.token
        }
        return config;
    },
    (err)=>{
        //请求错误的回调
        Promise.reject(err)
    }
)

// import { useRoute } from 'vue-router';
// const router = useRoute();

import router from '@/router'
//添加响应拦截器  
instance.interceptors.response.use(  
    result => {  
        //判断业务状态码  
        if (result.data.code === 0) {  
            return result.data;  
        }  
        //操作失败  
        ElMessage.error(result.data.msg ? result.data.msg : '服务异常');  
        //异步操作的状态转换为失败  
        return Promise.reject(new Error(result.data.msg || '服务异常')); // 返回带有信息的错误  
    },  
    err => {  
        // 检查 err.response 是否存在  
        if (err.response) {  
            //判断响应状态码，如果为401，则证明未登录，提示请登录，并跳转到登录页面  
            if (err.response.status === 401) {  
                ElMessage.error('请先登录');  
                router.push('/login');  
            } else {  
                ElMessage.error('服务异常');  
            }  
        } else {  
            // 处理没有 response 属性的情况，通常是网络错误  
            ElMessage.error('网络异常，请稍后重试');  
        }  
        return Promise.reject(err); //异步的状态转化成失败的状态  
    }  
);

export default instance;


// //定制请求的实例

// //导入axios  npm install axios
// import axios from 'axios';
// //定义一个变量,记录公共的前缀  ,  baseURL
// const baseURL = '/api';
// const instance = axios.create({baseURL})

// /* //导入token状态
// import { useTokenStore } from '@/stores/token.js';
// //添加请求拦截器
// instance.interceptors.request.use(
//     (config)=>{
//         //在发送请求之前做什么
//         let tokenStore = useTokenStore()
//         //如果token中有值，在携带
//         if(tokenStore.token){
//             config.headers.Authorization=tokenStore.token
//         }
//         return config
//     },
//     (err)=>{
//         //如果请求错误做什么
//         Promise.reject(err)
//     }
// ) */

// //添加响应拦截器
// instance.interceptors.response.use(
//     result=>{
//         return result.data;
//     },
//     err=>{
//         alert('服务异常');
//         return Promise.reject(err);//异步的状态转化成失败的状态
//     }
// )

// export default instance;